/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia.agente;

import entidades.ServicioImpl;
import java.util.List;
import persistencia.Agente;
import persistencia.Criterio;
import persistencia.FabricaCriterio;
import persistencia.FachadaInterna;
import persistencia.FachadaPersistencia;

/**
 *
 * @author Leandro
 */
public class ServicioAgente extends Agente implements Servicio {

    private ServicioImpl servicio;
    private boolean matHistoricosPrecios;
    
//    private String oidEmpleado;
    private boolean matEmpleado;


     /**
     * @return the servicio
     */
    public ServicioImpl getServicio() {
        return servicio;
    }

    /**
     * @param servicio the servicio to set
     */
    public void setServicio(ServicioImpl servicio) {
        this.servicio = servicio;
    }
    
    
    @Override
    public int getTiempoDuracionUnitario() {
        return getServicio().getTiempoDuracionUnitario();
    }

    @Override
    public void setTiempoDuracionUnitario(int tiempoDuracionUnitario) {
        getServicio().setTiempoDuracionUnitario(tiempoDuracionUnitario);
    }

    @Override
    public int getCodServicio() {
        return getServicio().getCodServicio();
    }

    @Override
    public void setCodServicio(int codServicio) {
        getServicio().setCodServicio(codServicio);
    }

    @Override
    public String getNombreServicio() {
        return getServicio().getNombreServicio();
    }

    @Override
    public void setNombreServicio(String nombreServicio) {
        getServicio().setNombreServicio(nombreServicio);
    }

    @Override
    public List<HistoricoPrecio> getHistoricosPrecios() {
        Criterio criterio;
        if(!matHistoricosPrecios){
            criterio = FabricaCriterio.getInstancia().obtenerCriterio("oidServicio", Criterio.OperadorRelacionalEnum.Igual.getString(), getOid(), true);
            servicio.setHistoricosPrecios(FachadaInterna.getInstancia().buscar(HistoricoPrecio.class, criterio));
            matHistoricosPrecios = true;
        }     
        return getServicio().getHistoricosPrecios();
    }

    @Override
    public void setHistoricosPrecios(List<HistoricoPrecio> historicosPrecios) {
        getServicio().setHistoricosPrecios(historicosPrecios);
    }

    @Override
    public List<Empleado> getEmpleadosAsignados() {
        Criterio criterio;
//        if(!matEmpleado ){
            criterio = FabricaCriterio.getInstancia().obtenerCriterio("oidServicio", Criterio.OperadorRelacionalEnum.Igual.getString(), getOid(), true);
            servicio.setEmpleadosAsignados(FachadaPersistencia.getInstancia().buscar(Empleado.class,criterio));
            matEmpleado = true;
//        }
        return getServicio().getEmpleadosAsignados();
    }

    @Override
    public void setEmpleadosAsignados(List<Empleado> empleadosAsignados) {
        getServicio().setEmpleadosAsignados(empleadosAsignados);
    }

    
//    /**
//     * @return the oidEmpleado
//     */
//    public String getOidEmpleado() {
//        return oidEmpleado;
//    }
//
//    /**
//     * @param oidEmpleado the oidEmpleado to set
//     */
//    public void setOidEmpleado(String oidEmpleado) {
//        this.oidEmpleado = oidEmpleado;
//    }

   
}
